package Day12.Generic;

/**
 * @author hyhWTX
 * @version 1.0
 * @date 2022年05月21日 17:24
 */

import java.util.ArrayList;
import java.util.Iterator;

/**
 *泛型的通配符：
 *  ？：代表任意的数据类型
 * 使用方法：
 *  不能创建对象使用
 *  只能作为方法的参数使用
 */

public class Demo05Generic {
    public static void main(String[] args) {
        ArrayList<Integer> list01 = new ArrayList<>();
        list01.add(1);
        list01.add(2);

        ArrayList<String> list02 = new ArrayList<>();
        list02.add("a");
        list02.add("B");


        printArray(list01);
        printArray(list02);
    }
    /**
     *定义一个方法，能遍历所有的类型的ArrayList集合
     * 这时候我们不知道ArrayList集合使用什么数据类型，可以泛型的通配符？来接受数据类型
     *
     * 注意：
     *      泛型是没有继承的概念的
     */ 
    public static void printArray(ArrayList<?> list){
        //使用迭代器遍历集合
        Iterator <?> it = list.iterator();
        while (it.hasNext()){
            //it.next()方法，取出的元素是Object。可以接受任意的数据类型
            Object o = it.next();
            System.out.println(o);
        }
    }
}
